package com.ny.service;

import com.ny.domain.MemberCardDO;
import com.ny.domain.MemberConsumptionDO;
import com.ny.domain.MemberDO;
import com.ny.domain.MemberLevelDO;
import com.ny.dto.MemberCardDTO;
import com.ny.dto.MemberConsumptionDTO;
import com.ny.dto.MemberDTO;
import com.ny.dto.MemberLevelDTO;
import com.ny.query.MemberQuery;
import java.lang.Boolean;
import java.util.List;

/**
 * 会员管理模块
 *
 * @author MSI-NB
 * @date 2025-03-08 13:14:38
 */
public interface MemberService {

    /**
     * 新增会员
     *
     * @param memberDTO 会员信息
     * @return
     */
    Boolean addMember(MemberDTO memberDTO);

    /**
     * 删除会员
     *
     * @param memberQuery 查询条件
     * @return
     */
    Boolean deleteMember(MemberQuery memberQuery);

    /**
     * 更新会员信息
     *
     * @param memberDTO 会员信息
     * @return
     */
    Boolean updateMember(MemberDTO memberDTO);

    /**
     * 查询会员信息
     *
     * @param memberQuery 查询条件
     * @return  会员信息
     */
    MemberDO getMemberInfo1(MemberQuery memberQuery);

    /**
     * 办理会员卡
     *
     * @param memberCardDTO 会员卡信息
     * @return
     */
    Boolean addMemberCard(MemberCardDTO memberCardDTO);

    /**
     * 充值会员卡
     *
     * @param memberCardDTO 会员卡信息
     * @return
     */
    Boolean rechargeMemberCard(MemberCardDTO memberCardDTO);

    /**
     * 续期会员卡
     *
     * @param memberCardDTO 会员卡信息
     * @return
     */
    Boolean renewMemberCard(MemberCardDTO memberCardDTO);

    /**
     * 查询会员卡信息
     *
     * @param memberQuery 查询条件
     * @return
     */
    List<MemberCardDO> getMemberCardInfo(MemberQuery memberQuery);

    /**
     * 新增会员消费记录
     *
     * @param memberConsumptionDTO 消费记录信息
     * @return
     */
    Boolean addMemberConsumption(MemberConsumptionDTO memberConsumptionDTO);

    /**
     * 查询会员消费记录
     *
     * @param memberQuery 查询条件
     * @return
     */
    List<MemberConsumptionDO> getMemberConsumptionInfo(MemberQuery memberQuery);

    /**
     * 新增会员等级
     *
     * @param memberLevelDTO 会员等级信息
     * @return
     */
    Boolean addMemberLevel(MemberLevelDTO memberLevelDTO);

    /**
     * 更新会员等级
     *
     * @param memberLevelDTO 会员等级信息
     * @return
     */
    Boolean updateMemberLevel(MemberLevelDTO memberLevelDTO);

    /**
     * 查询会员等级信息
     *
     * @param memberQuery 查询条件
     * @return  会员等级信息
     */
    MemberLevelDO getMemberLevelInfo1(MemberQuery memberQuery);

  List<MemberDO> queryMemberList(int pageNum, int pageSize);
}
